<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
  </head>

  <body>
    <script>
      function Person() {}

      let gd = new Person()
      // console.dir(Person)
      // 发现，Person.prototype 身上还有一个 __proto__ 的属性
      // 证明， 原型对象也是 另一个 构造函数new出来的
      // console.log(Person.prototype)

      // console.log(Person.prototype.__proto__.constructor === Object);
      // console.log(Person.prototype.__proto__ === Object.prototype)

      // 多个对象之间使用 __proto__ 链接起来，这个关系 我们称为  原型链


      // 找到 Object的原型，看看它有什么方法
      // console.log(Object.prototype)
      // 证明 Object原型的方法可以被 Person的原型使用
      // console.log(Person.prototype.toString());

      // 证明 Person的实例，能调用 Object的原型的方法
      // gd.toString()


      /*
          小结：
              1. 原型链 是 多个对象之间的一种关系 ， 通过 __proto__ 链接到一起的关系
              2. 原型链 的作用 ： 实现 js 的 继承 ， 继承就是指 代码(属性和方法)的复用
      */


      // 证明 Object的原型 它的 __proto__
      console.log(Object.prototype.__proto__) // 原型链的尽头是null
    </script>
  </body>

</html>